package array;
import java.util.Stack;

/**
 * LeetCode解决括号关闭的问题
 * 一个只有括号的字符串"(","{","[",")","}","]"，必须正确的关闭
 * 思路：
 *  1、将所有的左括号压入栈，然后判断栈顶的括号是否与下一个括号匹配
 *  2、要确保最后栈里没有元素
 */
public class Solution {

    public boolean isValide(String s){

        Stack<Character> stack = new Stack<Character>();
        for(int i = 0 ; i < s.length() ; i++){
            char c = s.charAt(i);
            if(c == '(' || c == '{' || c == '['){
                stack.push(c);
            }else {

                if(stack.isEmpty()){
                    //当前栈栈顶没有元素
                    return false;
                }

                char topChar = stack.pop();
                if( c == ')' && topChar != '('){
                    return false;
                }

                if( c == '}' && topChar != '{'){
                    return false;
                }

                if( c == ']' && topChar != '['){
                    return false;
                }
            }

        }

        return stack.isEmpty();
    }


}
